﻿using Onshi.POS.AccesoDatos.Interfaces;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;

namespace Onshi.POS.AccesoDatos
{
    public class ServicioDatosVendedores : ServicioDatosBase, IServicioDatosVendedores
    {
        #region Metodos

        public DataSet Vendedores_DevolverTodos(Boolean incluirImagen)
        {
            try
            {
                var cm = new SqlCommand("Vendedores_DevolverTodos", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.AddWithValue("@IncluirImagen", incluirImagen);
                var da = new SqlDataAdapter(cm);
                var ds = new DataSet();
                da.Fill(ds);
                return ds;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public DataSet Vendedores_DevolverPorId(Int32 idVendedor, Boolean incluirImagen)
        {
            try
            {
                var cm = new SqlCommand("Vendedores_DevolverPorId", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.AddWithValue("@IdVendedor", idVendedor);
                cm.Parameters.AddWithValue("@IncluirImagen", incluirImagen);
                var da = new SqlDataAdapter(cm);
                var ds = new DataSet();
                da.Fill(ds);
                return ds;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public DataSet Vendedores_DevolverPorCodigo(String codigo, Boolean incluirImagen)
        {
            try
            {
                var cm = new SqlCommand("Vendedores_DevolverPorCodigo", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.AddWithValue("@Codigo", codigo);
                cm.Parameters.AddWithValue("@IncluirImagen", incluirImagen);
                var da = new SqlDataAdapter(cm);
                var ds = new DataSet();
                da.Fill(ds);
                return ds;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public Int32 Vendedores_Insertar(Int32 idRubroVendedor, Byte idTipoComisionVendedor, String codigo, String nombre, Decimal comision, Decimal comisionMaxima, String email, String sitioWeb, String observaciones, Byte[] imagen)
        {
            try
            {
                var cm = new SqlCommand("Vendedores_Insertar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.AddWithValue("@IdRubroVendedor", idRubroVendedor);
                cm.Parameters.AddWithValue("@IdTipoComisionVendedor", idTipoComisionVendedor);
                cm.Parameters.AddWithValue("@Codigo", codigo);
                cm.Parameters.AddWithValue("@Nombre", nombre);
                cm.Parameters.AddWithValue("@Comision", comision);
                cm.Parameters.AddWithValue("@ComisionMaxima", comisionMaxima);
                cm.Parameters.AddWithValue("@Email", email);
                cm.Parameters.AddWithValue("@SitioWeb", sitioWeb);
                cm.Parameters.AddWithValue("@Observaciones", observaciones);
                cm.Parameters.AddWithValue("@Imagen", imagen);
                cm.Connection.Open();
                return Convert.ToInt32(cm.ExecuteScalar());
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public void Vendedores_Modificar(Int32 idVendedor, Int32 idRubroVendedor, Byte idTipoComisionVendedor, String codigo, String nombre, Decimal comision, Decimal comisionMaxima, String email, String sitioWeb, String observaciones, Byte[] imagen, Boolean estaEliminado)
        {
            try
            {
                var cm = new SqlCommand("Vendedores_Modificar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.AddWithValue("@IdVendedor", idVendedor);
                cm.Parameters.AddWithValue("@IdRubroVendedor", idRubroVendedor);
                cm.Parameters.AddWithValue("@IdTipoComisionVendedor", idTipoComisionVendedor);
                cm.Parameters.AddWithValue("@Codigo", codigo);
                cm.Parameters.AddWithValue("@Nombre", nombre);
                cm.Parameters.AddWithValue("@Comision", comision);
                cm.Parameters.AddWithValue("@ComisionMaxima", comisionMaxima);
                cm.Parameters.AddWithValue("@Email", email);
                cm.Parameters.AddWithValue("@SitioWeb", sitioWeb);
                cm.Parameters.AddWithValue("@Observaciones", observaciones);
                cm.Parameters.AddWithValue("@Imagen", imagen);
                cm.Parameters.AddWithValue("@EstaEliminado", estaEliminado);
                cm.Connection.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public Int32 DomiciliosVendedores_Insertar(Int32 idVendedor, Byte idTipoDomicilio, Int32 idBarrio, String calle, String numero, String piso, String departamento)
        {
            try
            {
                var cm = new SqlCommand("DomiciliosVendedores_Insertar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.AddWithValue("@IdVendedor", idVendedor);
                cm.Parameters.AddWithValue("@IdTipoDomicilio", idTipoDomicilio);
                cm.Parameters.AddWithValue("@IdBarrio", idBarrio);
                cm.Parameters.AddWithValue("@Calle", calle);
                cm.Parameters.AddWithValue("@Numero", numero);
                cm.Parameters.AddWithValue("@Piso", piso);
                cm.Parameters.AddWithValue("@Departamento", departamento);
                cm.Connection.Open();
                return Convert.ToInt32(cm.ExecuteScalar());
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public void DomiciliosVendedores_EliminarPorVendedor(Int32 idVendedor)
        {
            try
            {
                var cm = new SqlCommand("DomiciliosVendedores_EliminarPorVendedor", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.AddWithValue("@IdVendedor", idVendedor);
                cm.Connection.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public Int32 TelefonosVendedores_Insertar(Int32 idVendedor, Byte idTipoTelefono, String codigoArea, String numero)
        {
            try
            {
                var cm = new SqlCommand("TelefonosVendedores_Insertar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.AddWithValue("@IdVendedor", idVendedor);
                cm.Parameters.AddWithValue("@IdTipoTelefono", idTipoTelefono);
                cm.Parameters.AddWithValue("@CodigoArea", codigoArea);
                cm.Parameters.AddWithValue("@Numero", numero);
                cm.Connection.Open();
                return Convert.ToInt32(cm.ExecuteScalar());
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public void TelefonosVendedores_EliminarPorVendedor(Int32 idVendedor)
        {
            try
            {
                var cm = new SqlCommand("TelefonosVendedores_EliminarPorVendedor", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.AddWithValue("@IdVendedor", idVendedor);
                cm.Connection.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public void VendedoresCamposPersonalizadosVendedores_EliminarPorVendedor(Int32 idVendedor)
        {
            try
            {
                var cm = new SqlCommand("VendedoresCamposPersonalizadosVendedores_EliminarPorVendedor", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.AddWithValue("@IdVendedor", idVendedor);
                cm.Connection.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public void VendedoresCamposPersonalizadosVendedores_Insertar(Int32 idVendedor, Int32 idCampoPersonalizadoVendedor, String valor)
        {
            try
            {
                var cm = new SqlCommand("VendedoresCamposPersonalizadosVendedores_Insertar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.AddWithValue("@IdVendedor", idVendedor);
                cm.Parameters.AddWithValue("@IdCampoPersonalizadoVendedor", idCampoPersonalizadoVendedor);
                cm.Parameters.AddWithValue("@Valor", valor);
                cm.Connection.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public void VendedoresCamposPersonalizadosVendedores_EliminarPorCampoPersonalizadoVendedor(Int32 idCampoPersonalizadoVendedor)
        {
            try
            {
                var cm = new SqlCommand("VendedoresCamposPersonalizadosVendedores_EliminarPorCampoPersonalizadoVendedor", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.AddWithValue("@IdCampoPersonalizadoVendedor", idCampoPersonalizadoVendedor);
                cm.Connection.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public void Vendedores_ModificarRubroVendedor(Int32 idRubroVendedorNuevo, Int32 idRubroVendedorViejo)
        {
            try
            {
                var cm = new SqlCommand("Vendedores_ModificarRubroVendedor", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.AddWithValue("@IdRubroVendedorNuevo", idRubroVendedorNuevo);
                cm.Parameters.AddWithValue("@IdRubroVendedorViejo", idRubroVendedorViejo);
                cm.Connection.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public void DomiciliosVendedores_ModificarBarrio(Int32 idBarrioNuevo, Int32 idBarrioViejo)
        {
            try
            {
                var cm = new SqlCommand("DomiciliosVendedores_ModificarBarrio", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.AddWithValue("@IdBarrioNuevo", idBarrioNuevo);
                cm.Parameters.AddWithValue("@IdBarrioViejo", idBarrioViejo);
                cm.Connection.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        #endregion
    }
}
